
using System;
using System.IO;
using System.Collections.Generic;

namespace WindowsFormsApplication1
{


	public class TreinamentoHiperCubo
	{
		private static List<BeatParameters> listaParametros;
		
		public TreinamentoHiperCubo ()
		{
			
		
		}
		
		public static void treinaV1()
		{
			listaParametros = new List<BeatParameters>();
			Console.Write("\n__________________________");
			Console.Write("\n_       Topologia V1      _");
			Console.Write("\n__________________________\n");
			
			listaParametros.Add(new BeatParameters(lerArquivo("1-105.txt", 490),140));
			listaParametros.Add(new BeatParameters(lerArquivo("2-105.txt", 515),175));
			listaParametros.Add(new BeatParameters(lerArquivo("1-107.txt", 580),245));                                                                                                                        
			listaParametros.Add(new BeatParameters(lerArquivo("2-107.txt", 551),234));                                                                                                                        
			listaParametros.Add(new BeatParameters(lerArquivo("3-107.txt", 501),123));                                                                                                                        
			listaParametros.Add(new BeatParameters(lerArquivo("1-109.txt", 536),310));                                                                                                                        
			listaParametros.Add(new BeatParameters(lerArquivo("2-109.txt", 533),242));                                                                                                                        
			listaParametros.Add(new BeatParameters(lerArquivo("3-109.txt", 535),258));                                                                                                                        
			listaParametros.Add(new BeatParameters(lerArquivo("4-109.txt", 520),320));
			listaParametros.Add(new BeatParameters(lerArquivo("5-109.txt", 515),201));    
			listaParametros.Add(new BeatParameters(lerArquivo("1-111.txt", 625),245));                                                                                                                                                                                                                                                                    
			listaParametros.Add(new BeatParameters(lerArquivo("1-116.txt", 546),172));                                                                                                                                                                                                                                                                    
			listaParametros.Add(new BeatParameters(lerArquivo("2-116.txt", 552),171));                                                                                                                                                                                                                                                                    
			listaParametros.Add(new BeatParameters(lerArquivo("3-116.txt", 558),174));                                                                                                                                                                                                                                                                    
			listaParametros.Add(new BeatParameters(lerArquivo("1-118.txt", 613),197));                                                                                                                                                                                                                                                                    
			listaParametros.Add(new BeatParameters(lerArquivo("2-118.txt", 562),173));
			listaParametros.Add(new BeatParameters(lerArquivo("1-119.txt", 648),193));                                                                                                                                                                                                                                                                                                                                                                                            
			listaParametros.Add(new BeatParameters(lerArquivo("2-119.txt", 661),193));                                                                                                                                                                                                                                                                                                                                                                                            
			listaParametros.Add(new BeatParameters(lerArquivo("1-121.txt", 732),303));  
			
			realizaTreino();
		}
			                    
		public static void treinaV2()
		{
			listaParametros = new List<BeatParameters>();
			Console.Write("\n__________________________");
			Console.Write("\n_      Topologia V2      _");
			Console.Write("\n__________________________\n");
			
			listaParametros.Add(new BeatParameters(lerArquivo("1-102.txt", 504),205));
			listaParametros.Add(new BeatParameters(lerArquivo("2-102.txt", 492),252));
			//listaParametros.Add(new BeatParameters(lerArquivo("1-104.txt", 503)));
			
			realizaTreino();
		}
		
		public static void treinaV4()
		{		    
			listaParametros = new List<BeatParameters>();
			Console.Write("\n__________________________");
			Console.Write("\n_      Topologia V4      _");
			Console.Write("\n__________________________\n");
			
			listaParametros.Add(new BeatParameters(lerArquivo("1-124.txt", 783),362));  
		
			realizaTreino();
		}	
		
		public static void treinaV5()
		{
			listaParametros = new List<BeatParameters>();
			Console.Write("\n__________________________");
			Console.Write("\n_      Topologia V5      _");
			Console.Write("\n__________________________\n");
			
			listaParametros.Add(new BeatParameters(lerArquivo("1-100.txt", 601),286));
			listaParametros.Add(new BeatParameters(lerArquivo("1-123.txt", 437),192));                                                                                                                                                                                                                                                                                                                                                                                            
			listaParametros.Add(new BeatParameters(lerArquivo("2-123.txt", 415),195));                                                                                                                                                                                                                                                                                                                                                                                            
		
			realizaTreino();
		}
		
		private static void realizaTreino()
		{
			BeatParameters beatMean = new BeatParameters(0);
			BeatParameters beatMin = new BeatParameters(999999999);
			BeatParameters beatMax = new BeatParameters(0);
			
			foreach(BeatParameters beat in listaParametros)
			{
				beatMax.comparaMax(beat);
				beatMin.comparaMin(beat);
				beatMean.geraMedia(beat);
			}
			
			
			Console.Write("\n\nParametros Maximos:");
			beatMax.toString();
			Console.Write("\n\nParametros Minimos:");
			beatMin.toString();
			Console.Write("\n\nCentro de Massa:");
			beatMean.toString();
		}
		
		public static int[] lerArquivo(string nomeArquivo, int size)
		{
		 	StreamReader reader = new StreamReader(nomeArquivo);
		
			int[] array = new int[size];
			int count = 0;
			
			while(count<size){
				array[count] = int.Parse(reader.ReadLine());
				count++;
			}
		
			reader.Dispose();
			reader.Close();
			return array;
		}
			
			                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                
			                                                                                                                                                                                                                                                                                                                                                                                          
			                                                                                                                                                                                                                                                                                                                                                                                            
			                                                                                                                                                                                                                                                                                                                                                                                            
			                                                                                                                                                                                                                                                                                                                                                                                            
			                                                                                                                                                                                                                                                                    
 }		
			                                                                                                                                                                                                                                                                       
}
